#ifndef CELL_H
#define CELL_H

#include <QTableWidget.h>

class Cell : public QTableWidgetItem
{
public:
	Cell();

	QTableWidgetItem* clone() const;
	void setData(int role, const QVariant& value);
	QVariant data(int role) const;
	void setFormula(const QString& formula);
	QString formula() const;
	void setDirty();

private:
	QVariant value() const;
	QVariant evalExpression(const QString& str, int& pos) const;
	QVariant evalTerm(const QString& str, int& pos) const;
	QVariant evalFactor(const QString& str, int& pos) const;

	mutable QVariant cachedValue; // 把单元格的值缓存为QVariant
	mutable bool cacheIsDirty; // 如果缓存的值不是最新的，为true
};



#endif